package zheezes.model;

import java.util.List;

import zheezes.util.Visitor;


@SuppressWarnings("unchecked")
public interface ITreeNode<T> {
	public T getData();

	public void setData(T data);

	public ITreeNode getParent();

	public void setParent(ITreeNode parent);

	public List getChildren();

	public void setChildren(List children);

	public boolean hasChildren();

	public void addChild(ITreeNode child);

	public void removeChild(ITreeNode child);

	public ITreeNode find(ITreeNode node);

	public ITreeNode findByData(Object data);
	
	public void traverse(Visitor visitor);
}